Fog computing (also known as edge computing) is a decentralized architecture that provides storage, compute, and networking services via edge devices geographically proximate to an end-user. Bringing these services closer to the edge of a cloud network improves latency between the service and a client using the service. Thus, clients that typically require the results of compute service in real-time can benefit from fog computing. Examples of such clients include Internet-of-Things (IoT) devices that include sensors that are constantly obtaining data and need to make relatively quick decisions based on the data. Rather than send the data to a host on a cloud network, where the underlying processing can possibly take place in geographically distant regions, the client can instead send the data to a device residing in a fog network that is located closer to where the client is physically situated. Advantageously, fog computing complements cloud computing in such cases.
An issue that arises in leveraging fog computing in combination with cloud computing is efficiently determining when an application services should be accessed via a fog network rather than a cloud network, and vice versa. That is, at times, it is practical to keep compute services running in the cloud rather than in the fog, e.g., if the compute services are not often accessed by a client. Conversely, in other cases it is practical to perform carry out compute services in the fog, e.g., in times where traffic is increased. Further, in addition to determining where the services should be carried out, routing traffic from the client to the appropriate destination in a practical also becomes an issue.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially applied to other embodiments without specific recitation.